package codeTopPractice.sortedPractice;

public class 冒泡排序 {

    public static void main(String[] args) {

    }

    public static int[] bubbleSort(int[] nums){
        //特判
        if(nums==null || nums.length<=1) return nums;

        //最坏的情况是最右边的数最小，需要数组num.length-1次位置变换才能到最左边
        for (int i = 0; i < nums.length-1; i++) {
            //设标志位，若经过一次大循环没有发生元素交换说明已经排序完成，
            boolean isSorted = true;
            //进入一次循环，每一次排序都会确保最大的元素依次到最右边，所以每走一次循环，下一次可以少一次比较操作
            for (int j = 0; j < nums.length-i-1; j++) {
                //发生元素交换，标志位变false
                if(nums[j+1]<nums[j]){
                    isSorted = false;
                    int temp = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1] = temp;
                }
            }
            if(isSorted){
                break;
            }
        }
        return nums;
    }

}
